# -*- coding: utf-8 -*-

#estado de las teclas
KEY_RELEASED = 0
KEY_PRESSED = 1
KEY_HOLD = 2

class cKeyboard(object):

    """
     Clase encargada de gestionar el estado del teclado, asi como de presentar
     informacion sobre una tecla en particular.

    :version:
    :author:
    """

    """ ATTRIBUTES

     Diccionario de teclas presionadas en la anterior actualizacion.

    last_pressed  (public)

     Diccionario de teclas presionadas en la actualizacion actual.

    current_pressed  (public)

    """

    def get_key(self, key):
        """
         Este metodo se encarga de consultar el estado de una tecla en particular.

        @param cKeyboard self : 
        @param int key : Codigo de la tecla de la que se quiere obtener su estado. Este codigo variará dependiendod del framework que se esté usando.
        @return KeyButtonState :
        @author
        """
        state = 0
        if self.current_pressed.get(key):
            state+=1
            if self.last_pressed.get(key):
                state+=1
        return state

    def update(self, pressed_keys):
        """
         Este metodo se encarga de mover las teclas pulsadas "current_pressed" a
         "last_pressed" y carga las nuevas teclas pulsadas en "current_pressed".

        @param cKeyboard self : 
        @param dict pressed_keys : Diccionario con la informacion de las teclas pulsadas en el teclado fisico en el momento de la actualizacion.
        @return  :
        @author
        """
        self.last_pressed = self.current_pressed
        self.current_pressed = dict(pressed_keys)

    def __init__(self):
        self.last_pressed = {}
        self.current_pressed = {}

